package add;

public class Solution {
    public int add(int a, int b) {
        int t = (a&b)<<1; //进位
        int res = a^b; // 异或
        while(t!=0){
            res = res^t; // 加上进位
            t = (res&t)<<1;// 处理进位
        }
        return res;
    }
     // 4 + 5
     // 0000 0100
     // 0000 0101
     // ------------^ 异或 相同为0，不同为1
     // 0000 0001
     // 与运算  都是1则为1  处理进位(3和4进行与运算)，与运算结果为0，就没有进位
     // 0000 0100
     // 0000 0101
     // ----------&
     // 0000 0100
     // 将与运算的结果，左移一位。 0000 1000
     // 再异或 将上次异或的结果和与运算的结果进行异或
     // 0000 0001
     // 0000 1000
     // ----------^
     // 0000 1001
     // 再做与运算 判断进位，如果没有进位，得出结果
     // 步骤: 异或与位与






}
